/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jpa.entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 *
 * @author Usuario
 */
@Entity
@Table(name = "producto", catalog = "Sig", schema = "", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"idProducto"})})
@NamedQueries({
    @NamedQuery(name = "Producto.findAll", query = "SELECT p FROM Producto p"),
    @NamedQuery(name = "Producto.findByIdProducto", query = "SELECT p FROM Producto p WHERE p.idProducto = :idProducto"),
    @NamedQuery(name = "Producto.findByModelo", query = "SELECT p FROM Producto p WHERE p.modelo = :modelo"),
    @NamedQuery(name = "Producto.findByValorCompra", query = "SELECT p FROM Producto p WHERE p.valorCompra = :valorCompra"),
    @NamedQuery(name = "Producto.findByValorVentaUrucel", query = "SELECT p FROM Producto p WHERE p.valorVentaUrucel = :valorVentaUrucel"),
    @NamedQuery(name = "Producto.findByValorVentaML", query = "SELECT p FROM Producto p WHERE p.valorVentaML = :valorVentaML"),
    @NamedQuery(name = "Producto.findByValorVentaFinanciado", query = "SELECT p FROM Producto p WHERE p.valorVentaFinanciado = :valorVentaFinanciado")})
public class Producto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Basic(optional = false)
    @Column(name = "idProducto", nullable = false)
    private Integer idProducto;
    @Basic(optional = false)
    @Column(name = "modelo", nullable = false, length = 45)
    private String modelo;
    @Basic(optional = false)
    @Column(name = "valorCompra", nullable = false)
    private double valorCompra;
    @Basic(optional = false)
    @Column(name = "valorVentaUrucel", nullable = false)
    private double valorVentaUrucel;
    @Basic(optional = false)
    @Column(name = "valorVentaML", nullable = false)
    private double valorVentaML;
    @Basic(optional = false)
    @Column(name = "valorVentaFinanciado", nullable = false)
    private double valorVentaFinanciado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "producto")
    private List<Productoinventario> productoinventarioList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "producto")
    private List<ProductopreRegistro> productopreRegistroList;
    @JoinColumn(name = "idMarca", referencedColumnName = "idmarca", nullable = false)
    @ManyToOne(optional = false)
    private Marca marca;
    @JoinColumn(name = "idCategoria", referencedColumnName = "idCategoria", nullable = false)
    @ManyToOne(optional = false)
    private Categoria categoria;

    public Producto() {
    }

    public Producto(Integer idProducto) {
        this.idProducto = idProducto;
    }

    public Producto(Integer idProducto, String modelo, double valorCompra, double valorVentaUrucel, double valorVentaML, double valorVentaFinanciado) {
        this.idProducto = idProducto;
        this.modelo = modelo;
        this.valorCompra = valorCompra;
        this.valorVentaUrucel = valorVentaUrucel;
        this.valorVentaML = valorVentaML;
        this.valorVentaFinanciado = valorVentaFinanciado;
    }

    public Integer getIdProducto() {
        return idProducto;
    }

    public void setIdProducto(Integer idProducto) {
        this.idProducto = idProducto;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public double getValorCompra() {
        return valorCompra;
    }

    public void setValorCompra(double valorCompra) {
        this.valorCompra = valorCompra;
    }

    public double getValorVentaUrucel() {
        return valorVentaUrucel;
    }

    public void setValorVentaUrucel(double valorVentaUrucel) {
        this.valorVentaUrucel = valorVentaUrucel;
    }

    public double getValorVentaML() {
        return valorVentaML;
    }

    public void setValorVentaML(double valorVentaML) {
        this.valorVentaML = valorVentaML;
    }

    public double getValorVentaFinanciado() {
        return valorVentaFinanciado;
    }

    public void setValorVentaFinanciado(double valorVentaFinanciado) {
        this.valorVentaFinanciado = valorVentaFinanciado;
    }

    public List<Productoinventario> getProductoinventarioList() {
        return productoinventarioList;
    }

    public void setProductoinventarioList(List<Productoinventario> productoinventarioList) {
        this.productoinventarioList = productoinventarioList;
    }

    public List<ProductopreRegistro> getProductopreRegistroList() {
        return productopreRegistroList;
    }

    public void setProductopreRegistroList(List<ProductopreRegistro> productopreRegistroList) {
        this.productopreRegistroList = productopreRegistroList;
    }

    public Marca getMarca() {
        return marca;
    }

    public void setMarca(Marca marca) {
        this.marca = marca;
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProducto != null ? idProducto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Producto)) {
            return false;
        }
        Producto other = (Producto) object;
        if ((this.idProducto == null && other.idProducto != null) || (this.idProducto != null && !this.idProducto.equals(other.idProducto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Producto[idProducto=" + idProducto + "]";
    }

}
